#include <stdlib.h>
#include <stdio.h>
#include "buffer.h"

//Buffer sera alocado estaticamente!
char buffer[TAMANHO];
//Guarda a posicao de leitura do buffer.
int ponteiro;
//Ponteiro para arquivo que esta sendo lido.
FILE* arquivo;

//Funciona como o construtor da classe.
void inicializaBuffer(FILE* file) {
    arquivo = file;
}

//Preenche o buffer lendo o numero de caracteres especificado pela
//constante TAMANHO.
void preencheBuffer() {
    int numCaracteresLidos = fread(buffer, sizeof(char), TAMANHO, arquivo);
    if(feof(arquivo)) buffer[numCaracteresLidos] = EOF;
    ponteiro = 0;
}

//Retorna o proximo caracter presente no buffer. Caso o
//ponteiro atinja o tamanho do buffer, ele eh novamente
//preenchido para atender a demanda de caracteres.
char getProximoChar() {
    if(ponteiro == TAMANHO) preencheBuffer();
    return buffer[ponteiro++];
}
